Home

sw example

Name

greetings

Code

-- Author: Garry Morrison
-- Updated: 2022/2/12
--
-- Toy example where we randomly greet people:

|context> => |greetings>

-- a collection of greeting methods for a single person:
hello |*> #=> |Hello,> __ |_self> _ |!>
hey |*> #=> |Hey Ho!> __ |_self> _ |.>
wat-up |*> #=> |Wat up my homie!> __ |_self> __ |right?>
greetings |*> #=> |Greetings fine Sir. I belive they call you> __ |_self> _ |.>
howdy |*> #=> |Howdy partner!>
good-morning |*> #=> |Good morning> __ |_self> _ |.>
gday |*> #=> |G'day> __ |_self> _ |.>

-- define the list of greetings to randomly pick from:
list-of |single greetings> => |op: hello> + |op: hey> + |op: wat-up> + |op: greetings> + |op: howdy> + |op: good-morning> + |op: gday>


-- a collection of greetings methods for more than one person:
multi-wat-up |*> #=> |Wat up my homies!> __ |_self> __ |right?>
multi-greetings |*> #=> |Greetings fine Sirs. I belive they call you> __ |_self> _ |.>
multi-howdy |*> #=> |Howdy partners!>

-- define the list of greetings to randomly pick from:
list-of |multi greetings> => |op: hello> + |op: hey> + |op: multi-wat-up> + |op: multi-greetings> + |op: multi-howdy> + |op: good-morning> + |op: gday>

-- randomly pick a greeting method:
single-greet |*> #=> apply(pick-elt list-of |single greetings>, |_self>)
multi-greet |*> #=> apply(pick-elt list-of |multi greetings>, |_self>)


-- now the main operator:
greet { the|people>} #=>
    if( how-many the |people> == |number: 1> ):
        single-greet the |people>
    else:
        multi-greet list-to-words the |people>
    end:

-- convert a list into a comma-and string:
list-to-words (*) #=> smerge[" and "] ( smerge[", "] sselect[1, -2] . sselect[-1, -1] ) sp2seq |__self>


-- now define some friends to greet:
friends |Sam> => |Charlie> + |George> + |Emma> + |Jack> + |Robert> + |Frank> + |Julie>
friends |Emma> => |Liz> + |Bob>


-- now some example usage:
print greet |Fred>
print greet friends |Sam>
print greet friends |Emma>


Raw code